// 1.通过express构建服务器
const express = require("express");
const path = require("path");
const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mynews", err => {
  if (err) {
    return console.log(err);
  }
  console.log("数据库链接成功");
})

// 建立骨架 
let schema = mongoose.Schema({
  title: String,
  detail: String,
  addtime: String
})
// 建立集合关系
let newsModel = mongoose.model("lists", schema);

let app = express();
// 设置views的路径
app.set("views", "./views");
// 设置引擎模板
app.set("view engine", "ejs");
app.use(express.static(path.join(__dirname, "./static")));

// 1.通过页码显示对应的分页数据
// 2.通过点击分页的时候显示具体的数据
// ctx:context 上下文 ，koa ---》ctx
app.get("/", async (req, res) => {
  // 每页显示两条数据 进入页面 显示0-2条数据，默认页码在第一页
  // 页码：当前是在哪一页
  let p = 1; // 默认页面是第一页
  let queryp = req.query.p; // 通过querystring修改页面
  if (typeof queryp !== "undefined") {
    p = queryp; //当前的页码
  }
  // 如何通过当前页码查询对应的数据
  let perpage = 2;  //每页需要显示的条数
  // 需要获取的新闻列表数据
  let queryPerpage = req.query.perpage;
  if (typeof queryPerpage !== "undefined") {
    perpage = queryPerpage;
  }
  // 需要获取新闻列表的数据
  let data = await newsModel.find().skip((p - 1) * perpage).limit(perpage);
  // 计算页码
  let totaldata = await newsModel.find();
  let length = totaldata.length; // 总的数据条数
  let page = Math.ceil(length / perpage);
  // console.log(data);
  res.render("index.ejs", { data, page, perpage });
})

// 路由，显示详细信息
app.get("/detail", async (req, res) => {
  // 接收get携带过来的querystring参数
  let { _id } = req.query;
  console.log(_id); //可以通过_id查询到具体的数据
  let [detailData] = await newsModel.find({ _id });  // 通过id查询详细信息
  console.log(detailData);
  res.render("detail.ejs", { detailData }); //把详细信息推送到模板里
})

app.listen(8080);

/* 
db.lists.insert([{
    title:"标题一",
    detail:"新闻一的详细信息111",
    addtime:"2022-9-26"
},{
title:"标题二",
    detail:"新闻一的详细信息222",
    addtime:"2022-9-26"
},{
title:"标题三",
    detail:"新闻一的详细信息333",
    addtime:"2022-9-26"
},{
title:"标题四",
    detail:"新闻一的详细信息4444",
    addtime:"2022-9-26"
}])

*/